import tkinter as tk
from tkinter import ttk, messagebox
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import numpy as np
import math
from matplotlib.font_manager import FontProperties
import matplotlib as mpl

class BaseWellGUI:
    def __init__(self, root):
        self.root = root
        self.root.title("沉井设计与计算程序")
        self.root.geometry("1200x800")
        
        # 设置Matplotlib使用支持中文的字体
        try:
            # 尝试使用微软雅黑
            plt.rcParams['font.sans-serif'] = ['Microsoft YaHei', 'SimHei', 'KaiTi', 'Arial Unicode MS']
        except:
            # 如果失败，尝试使用更通用的方法
            pass
        
        plt.rcParams['axes.unicode_minus'] = False  # 正常显示负号
        
        # 创建主框架
        self.main_frame = ttk.Frame(root)
        self.main_frame.pack(fill=tk.BOTH, expand=True, padx=20, pady=20)
        
        # 创建输入框架 - 三列布局
        self.input_frame = ttk.Frame(self.main_frame)
        self.input_frame.pack(fill=tk.X, padx=10, pady=10)
        
        # 创建三列框架
        self.basic_frame = ttk.LabelFrame(self.input_frame, text="基本参数")
        self.basic_frame.pack(side=tk.LEFT, fill=tk.BOTH, expand=True, padx=5, pady=5)
        
        self.segment_frame = ttk.LabelFrame(self.input_frame, text="分段参数")
        self.segment_frame.pack(side=tk.LEFT, fill=tk.BOTH, expand=True, padx=5, pady=5)
        
        self.section_frame = ttk.LabelFrame(self.input_frame, text="分节参数")
        self.section_frame.pack(side=tk.LEFT, fill=tk.BOTH, expand=True, padx=5, pady=5)
        
        # 创建按钮区
        self.button_frame = ttk.Frame(self.main_frame)
        self.button_frame.pack(fill=tk.X, padx=10, pady=10)
        
        self.calculate_btn = ttk.Button(self.button_frame, text="计算并绘图", command=self.calculate)
        self.calculate_btn.pack(side=tk.LEFT, padx=5, pady=5)
        
        self.clear_btn = ttk.Button(self.button_frame, text="清空数据", command=self.clear_data)
        self.clear_btn.pack(side=tk.LEFT, padx=5, pady=5)
        
        # 创建结果展示区
        self.result_frame = ttk.LabelFrame(self.main_frame, text="计算结果")
        self.result_frame.pack(fill=tk.BOTH, expand=True, padx=5, pady=5)
        
        # 创建标签页
        self.notebook = ttk.Notebook(self.result_frame)
        self.notebook.pack(fill=tk.BOTH, expand=True, padx=5, pady=5)
        
        # 分段结果标签页
        self.segment_tab = ttk.Frame(self.notebook)
        self.notebook.add(self.segment_tab, text="分段结果")
        
        # 分节结果标签页
        self.section_tab = ttk.Frame(self.notebook)
        self.notebook.add(self.section_tab, text="分节结果")
        
        # 绘图标签页
        self.plot_tab = ttk.Frame(self.notebook)
        self.notebook.add(self.plot_tab, text="标高示意图")